Timm Bäder [Thu, 19 Jan 2017 19:15:43 +0000 (20:15 +0100)]
fontbutton: Be a GtkWidget
Timm Bäder [Thu, 19 Jan 2017 14:02:59 +0000 (15:02 +0100)]
assistant: Don't forget to remove child widgets
Timm Bäder [Thu, 19 Jan 2017 13:37:51 +0000 (14:37 +0100)]
toolitemgroup: Properly remove internal child widget
We now need to use gtk_widget_unparent and can't just destroy it.
Timm Bäder [Thu, 19 Jan 2017 13:34:42 +0000 (14:34 +0100)]
popovermenu: Remove forall implementation
Timm Bäder [Thu, 19 Jan 2017 11:30:23 +0000 (12:30 +0100)]
button: Don't explicitly show child widgets
Timm Bäder [Thu, 19 Jan 2017 11:26:56 +0000 (12:26 +0100)]
recorder: Adapt to widget visibility changes
We now need to explicitly hide the details label.
Timm Bäder [Thu, 19 Jan 2017 10:00:30 +0000 (11:00 +0100)]
Fix some widget visibility fallout
Timm Bäder [Thu, 19 Jan 2017 09:31:03 +0000 (10:31 +0100)]
widget: Remove show-all property
Doesn't make sense anymore now that gtk_widget_show_all is gone.
Timm Bäder [Thu, 19 Jan 2017 09:02:04 +0000 (10:02 +0100)]
Remove gtk_widget_show_all
Timm Bäder [Thu, 19 Jan 2017 07:50:37 +0000 (08:50 +0100)]
widget: Remove show_all vfunc
Timm Bäder [Wed, 18 Jan 2017 21:21:42 +0000 (22:21 +0100)]
filechooserbutton: Be a GtkWidget
Instead of subclassing GtkBox to have 2 child widgets, subclass
GtkWidget and only render one of them.
Timm Bäder [Mon, 16 Jan 2017 17:47:31 +0000 (18:47 +0100)]
sizerequest: Use gtk_widget_measure to measure widget sizes
Timm Bäder [Sat, 14 Jan 2017 09:08:53 +0000 (10:08 +0100)]
gtkbuilder: Improve error messages
Timm Bäder [Thu, 12 Jan 2017 16:13:19 +0000 (17:13 +0100)]
shortcutswindow: Unset search_bar in dispose
And check for null-ness in unmap. This prevents a crash when the window
is first disposed and then unmapped.
Timm Bäder [Thu, 12 Jan 2017 12:10:14 +0000 (13:10 +0100)]
shortcutswindow: Use GtkButton:icon-name for search button
Timm Bäder [Thu, 12 Jan 2017 11:59:06 +0000 (12:59 +0100)]
shortcutsshortcut: Be a GtkWidget
Instead of subclassing GtkBox and overriding _add to not work, subclass
GtkWidget and add a normal GtkBox as a child widget.
Timm Bäder [Thu, 12 Jan 2017 10:26:55 +0000 (11:26 +0100)]
gtkshortcutswindow: Adapt to GtkWidget visibility changes
Timm Bäder [Thu, 12 Jan 2017 09:12:31 +0000 (10:12 +0100)]
widget-factory: Remove some gtk3-widget-factory leftovers
Timm Bäder [Thu, 12 Jan 2017 09:04:35 +0000 (10:04 +0100)]
filechooser: adapt to GtkWidget:visible changes
Timm Bäder [Thu, 12 Jan 2017 08:47:50 +0000 (09:47 +0100)]
widget-factory: Adapt to GtkWidget visibility changes
Make the infobar and the toolbar invisible by default and remove all the
lines showing the other widgets.
Timm Bäder [Thu, 12 Jan 2017 08:43:45 +0000 (09:43 +0100)]
coloreditor: Hide overlay boxes
Timm Bäder [Thu, 12 Jan 2017 08:43:17 +0000 (09:43 +0100)]
Hide popovers and toplevels by default
Timm Bäder [Thu, 12 Jan 2017 08:29:59 +0000 (09:29 +0100)]
widget: Be visible by default
Daniel Boles [Fri, 20 Jan 2017 03:30:36 +0000 (03:30 +0000)]
combobox: popdown() the menu during unmap()
combo_box_popdown() currently skips popping down our menu if it is NULL.
But the required call to this at end-of-life was in destroy(), by which
point dispose() already NULLed the menu, so Menu::popdown() would never
run, even if it should. Fix this by trying popdown() earlier in unmap().
Also, add a converse assurance that we don’t popup() while not mapped.
Even once we remove all the now-pointless NULL checks, destroy() was the
wrong place to call combo_box_popdown(), and unmap() is the right place.
Carlos Garnacho [Fri, 20 Jan 2017 13:04:29 +0000 (14:04 +0100)]
Revert "wayland: Push NULL buffer when hiding a GdkWindow"
This reverts commit
6beb0b91c91dd4a018b0fe2c39f5687a00938821.
Mandy Wang [Fri, 20 Jan 2017 12:37:01 +0000 (20:37 +0800)]
update zh_CN translation
Chun-wei Fan [Fri, 20 Jan 2017 10:38:53 +0000 (18:38 +0800)]
gtkmain: Fix build on Windows
gtk_init() removed its support for supporting arguments, so we ought to do
likewise for Windows, which actually defines items that call gtk_init()
the old way (and also get rid of argument support in those functions,
since the direction is to not support them).
https://bugzilla.gnome.org/show_bug.cgi?id=773299
Chun-wei Fan [Fri, 20 Jan 2017 10:35:52 +0000 (18:35 +0800)]
Visual Studio builds: Update GSK project
Another GSK Vulkan renderer source was added for the build, so include it
here.
Benjamin Otte [Wed, 18 Jan 2017 21:41:20 +0000 (22:41 +0100)]
gtk: Register GSK resources at startup
That way they show up in the resource list in the inspector even when
running with the Cairo renderer.
Daniel Boles [Thu, 19 Jan 2017 22:28:41 +0000 (22:28 +0000)]
combobox: Remove dead code & unneeded type checks
Commit
fdc0c6426b6fb751653f3a8536a344f69a6407ac removed the appears-as-
list style property, & hence the ability to put the ComboBox into list
mode – but it left behind a pile of hijinks that were only used in said
mode & so were now doing absolutely nothing. This commit deletes those.
While doing that, I got carried away…so this also stops pointlessly type
checking popup_widget, as that can never be anything but a GtkTreeMenu.
It still checks for NULL everywhere, which shouldn’t be needed, but (A)
this commit is already too big, & (B) simply removing such checks where
they _seem_ unnecessary causes bad times. I’ll puzzle through that later
Daniel Boles [Thu, 19 Jan 2017 21:51:22 +0000 (21:51 +0000)]
testcombo—Don’t set appears-as-list style property
List mode no longer exists, so this had no effect.
Daniel Boles [Thu, 19 Jan 2017 21:23:51 +0000 (21:23 +0000)]
combobox: Make wrap-width and grid mode work again
Commit
fdc0c6426b6fb751653f3a8536a344f69a6407ac for removing (partly!)
appears-as-list also deleted the code that propagated wrap-width to the
TreeMenu and thus put us into “grid mode”. This restores that code.
And as Benjamin noted, calling check_appearance() here is wrong, so bye.
Matthias Clasen [Thu, 19 Jan 2017 18:52:52 +0000 (13:52 -0500)]
Add a section about initialization to the migration guide
Just the facts.
Matthias Clasen [Wed, 28 Dec 2016 13:53:22 +0000 (08:53 -0500)]
Update callers
Adapt all our tests and examples to the new initialization api.
Matthias Clasen [Wed, 28 Dec 2016 21:39:22 +0000 (16:39 -0500)]
Drop gdk init api
Supporting separately initialized gdk is just not worth it.
Matthias Clasen [Wed, 28 Dec 2016 13:49:37 +0000 (08:49 -0500)]
Drop arguments from gtk_init
This is our ultimate goal: no more commandline argument handling.
Lots of callers will have to be updated.
Matthias Clasen [Wed, 28 Dec 2016 12:46:56 +0000 (07:46 -0500)]
Simplify initialization code
Now that gtk_get_option_group and gtk_parse_args are no longer
public, we can get rid of them.
Matthias Clasen [Tue, 27 Dec 2016 23:49:30 +0000 (18:49 -0500)]
Drop the --gtk-debug and --gtk-no-debug options
We have environment variables that cover this.
Matthias Clasen [Tue, 27 Dec 2016 23:48:02 +0000 (18:48 -0500)]
Drop the --g-fatal-warnings argument
We don't need it, GLib has an environment variable for this.
Matthias Clasen [Tue, 27 Dec 2016 23:46:45 +0000 (18:46 -0500)]
Drop the --gtk-modules argument
We don't need it; the environment variable is enough.
Matthias Clasen [Tue, 27 Dec 2016 23:45:53 +0000 (18:45 -0500)]
Don't export gtk_get_option_group
We want to get rid of commandline option handling in GTK+.
This is a step in that direction.
Matthias Clasen [Tue, 27 Dec 2016 23:36:19 +0000 (18:36 -0500)]
Stop exporting gtk_parse_args
We want to stop handling commandline arguments, and that is the
sole purpose of this function. So it has to go
Matthias Clasen [Tue, 27 Dec 2016 23:31:03 +0000 (18:31 -0500)]
Drop gtk_init_with_args
We want to simplify our initialization code and remove all commandline
argument handling from it. The first stop for this is to reduce the
number of gtk_init variants we have.
Emmanuele Bassi [Thu, 19 Jan 2017 18:18:07 +0000 (18:18 +0000)]
gdk: Skip GdkVulkanContext methods when building introspection data
We cannot use Vulkan types through introspection anyway.
Carlos Garnacho [Thu, 19 Jan 2017 15:07:13 +0000 (16:07 +0100)]
wayland: Push NULL buffer when hiding a GdkWindow
This is how windows are meant to be hidden as per the wayland
protocol, there's no need to destroy the xdg_surface and other
interfaces.
Also, rename gdk_wayland_window_hide_surface() to clear_surface(),
as that's what it does.
https://bugzilla.gnome.org/show_bug.cgi?id=773686
Daniel Boles [Thu, 19 Jan 2017 03:26:09 +0000 (03:26 +0000)]
combobox: Avoid a pointless assignment
Don’t get the active item pointer before the grid/non-grid conditional,
because if we’re in grid mode, we re-get it before selecting it anyway.
Daniel Boles [Thu, 19 Jan 2017 03:12:32 +0000 (03:12 +0000)]
combobox: Also preselect active item in grid popup
i.e. when wrap-width > 0. This was only being done for non-grid cases.
So, ComboBoxes in grid mode did not indicate their selection when popped
up and required users to keynav from ‘nothing’ (at the top-left) to the
item they wanted to select. By selecting the active item in advance, now
it’s highlighted & acts as the starting point for keynav around the grid
Daniel Boles [Thu, 19 Jan 2017 00:44:35 +0000 (00:44 +0000)]
scale: Really fix documentation of set_digits()
This previously only mentioned its effect on the displayed value, and
even after the previous commit, its rounding of the actual value upon
change still reads like too much of an afterthought. Worse, it wasn’t
mentioned at all in the doc for the @digits parameter. Change this to
emphasise rounding always occurs and the displayed value is secondary.
Daniel Boles [Wed, 18 Jan 2017 23:42:55 +0000 (23:42 +0000)]
scale: doc: set_digits doesn’t round retroactively
Whether it should is an open question, but for now, the documentation
should clearly indicate that currently rounding is only applied upon
changes to the value, not to the existing value when ::digits changes.
This is already clear in the doc for the underlying Range::round-digits.
https://bugzilla.gnome.org/show_bug.cgi?id=358970
Daniel Boles [Wed, 18 Jan 2017 22:54:42 +0000 (22:54 +0000)]
Scale: Always sync ::digits to Range::round-digits
The documents state that gtk_scale_set_digits() “causes the value of the
adjustment to be rounded off to this number of digits, so the retrieved
value matches the value the user saw.” Note the lack of any condition.
But in fact, if draw-value was false, rounding was disabled on the base
Range, so values that weren’t displayed weren’t rounded. This made the
docs wrong and made an apparently cosmetic detail alter functionality.
Fix by ensuring the number of digits set on Scale is always propagated
along to gtk_range_set_round_digits(), thus rounding to it in all cases
when the value changes, regardless of whether the value is displayed.
This doesn’t address the other idea from Bugzilla: that changing the
number of digits should clamp the _existing_ value if it’s more precise.
This contradicts digits docs in the base Range, but the above from Scale
can be read as implying it’ll happen. For now, that’s an open question.
https://bugzilla.gnome.org/show_bug.cgi?id=358970
Daniel Boles [Wed, 18 Jan 2017 22:22:52 +0000 (22:22 +0000)]
combobox: Work around popup handler altering model
GtkFileChooserButton installs a handler for the popped-up signal, which
refilters the menu, in order to hide the “(None)” item from the popup
if it was previously selected in the ComboBox. This oddity means that:
• Until recently, this item would be selected in the menu shell, which
would then be popped up and change the selection away from that item.
This was therefore redundant (more on which below!) but benign.
• After the patch for https://bugzilla.gnome.org/show_bug.cgi?id=771242
however, this causes a critical assertion fail, as now we stash the
originally selected item in a pointer so that it can be selected only
after realisation/popup – but by that stage, the model has just been
refiltered and the previous pointer no longer refers to a valid item.
This commit works around this problem by, after popping up the menu,
getting the active item again, in case a popped-up handler has gone and
invalidated the pointer to the active item that we saved before popup.
If a handler does this, everything done to find/use the original item is
pointless. But this avoids the ugly critical in FileChooserButton, while
not harming every other ComboBox that doesn’t mess with its model while
popping up (hopefully the vast majority), and it’s very difficult to
imagine a way to check if the active item is /going to/ be hidden later)
Daniel Boles [Wed, 18 Jan 2017 22:17:37 +0000 (22:17 +0000)]
combobox: Don’t select active item if it’s hidden
I hope no one ever actually brings such a silly item into this world,
but this achieves symmetry with the similar checks immediately after.
Daniel Boles [Wed, 18 Jan 2017 21:20:10 +0000 (21:20 +0000)]
combobox: Move variables into narrowest scopes
Dušan Kazik [Wed, 18 Jan 2017 20:50:55 +0000 (20:50 +0000)]
Update Slovak translation
Benjamin Otte [Wed, 18 Jan 2017 15:46:04 +0000 (16:46 +0100)]
vulkan: Fix copy/paste error
Benjamin Otte [Wed, 18 Jan 2017 15:42:01 +0000 (16:42 +0100)]
vulkan: Add compiled shaders
I forgot to include them when adding the shaders.
Benjamin Otte [Wed, 18 Jan 2017 15:39:27 +0000 (16:39 +0100)]
vulkan: Compute right size for outset shadow
We were emitting the box and not the shadow box as the rectangle. So we
didn't draw any shadows. Oops.
Benjamin Otte [Wed, 18 Jan 2017 03:12:15 +0000 (04:12 +0100)]
css: Remove deprecated number-as-pixels compatibility
Previously, for compatibility with GTK 3.0, we allowed specifying
numbers without units and interpreted them as pixels, even when the CSS
specification didn't.
Remove that now that we can break API.
Benjamin Otte [Wed, 18 Jan 2017 03:07:09 +0000 (04:07 +0100)]
vulkan: Add support for unblurred box-shadow
Benjamin Otte [Tue, 17 Jan 2017 23:05:25 +0000 (00:05 +0100)]
rendernode: Add getters for box-shadow nodes
Benjamin Otte [Tue, 17 Jan 2017 19:59:19 +0000 (20:59 +0100)]
docs: Remove mention of GdkColor
Matthias Clasen [Tue, 17 Jan 2017 19:14:34 +0000 (14:14 -0500)]
Revert "filechooser portal: Make sure we can save"
This reverts commit
4875c689a0e826604953965ffdb71d8b82cae364.
This was a thinko. Writable is not actually settable from the
application side, but only for the user, from the backend side.
Matthias Clasen [Tue, 17 Jan 2017 19:08:38 +0000 (14:08 -0500)]
filechooser portal: Make sure we can save
Explicitly request files for saving to be writable, otherwise
we are at the mercy of the portal, which currently gets it wrong.
Rui Matos [Wed, 11 Jan 2017 18:12:12 +0000 (19:12 +0100)]
gdk/wayland: Always get the seat's key modifiers from the GdkKeymap
Elsewhere we already go through the keymap to get modifiers so we
should do the same here. In fact, this was relying on xkb modifier
mask values being bitwise compatible with GdkModifierType which isn't
necessarily true.
https://bugzilla.gnome.org/show_bug.cgi?id=770112
Rui Matos [Wed, 11 Jan 2017 17:33:11 +0000 (18:33 +0100)]
gdk/wayland: Don't add GDK_META_MASK to gdk mod masks if MOD1 is set
Gtk+ treats MOD1 as a synonym for Alt, and does not expect it to be
mapped around, so we should avoid adding GDK_META_MASK if MOD1 is
already included to avoid confusing gtk+ and applications that rely on
that behavior.
https://bugzilla.gnome.org/show_bug.cgi?id=770112
Jonas Ådahl [Thu, 5 Jan 2017 08:01:49 +0000 (16:01 +0800)]
wayland: Handle subsurface as popup parent
When a subsurface is used as a parent of a popup, GDK needs to traverse
up to the transient-for as the next parent, to properly find the parent
used by the popup positioner. This is because the parent of a popup
must always either be an xdg_popup or an xdg_surface, but traversing
the "parent" (in GDK terms) upwards from a subsurface will end up on
the fake root window before we hit the actual parent (in Wayland terms).
https://bugzilla.gnome.org/show_bug.cgi?id=776225
Benjamin Otte [Tue, 17 Jan 2017 05:38:36 +0000 (06:38 +0100)]
vulkan: Add fallback message for node-as-texture
This is mainly to motivate me to implement it.
Benjamin Otte [Tue, 17 Jan 2017 05:15:03 +0000 (06:15 +0100)]
vulkan: Generate clip shaders from same source
Instead of having 3 different shaders for the different clipping
versions, just have one shader and use a preprocessor define to use
different clip functions.
That preprocessor define is set in the Makefile.
Also use foo.frag and foo.vert as the file extensions instead of using
foo.frag.glsl and foo.vert.glsl, as that's what glslc suggests as
extension.
Benjamin Otte [Tue, 17 Jan 2017 04:50:52 +0000 (05:50 +0100)]
vulkan: Add clip.vert.glsl
Implement clipping the same way as in the last commit for the
fragment shaders.
Benjamin Otte [Tue, 17 Jan 2017 04:36:03 +0000 (05:36 +0100)]
vulkan: Add a clip.frag.glsl include
This include is supposed to handle clipping for the different clipping
methods.
So far, we only use it in the rounded rect cases.
Benjamin Otte [Tue, 17 Jan 2017 04:20:07 +0000 (05:20 +0100)]
vulkan: Add push constants to fragment shader
That way we don't need to move the clip rounded rect manually through
the vertex shader into the fragment shader but can just look at the push
constants.
Simplifies shaders a lot.
Benjamin Otte [Tue, 17 Jan 2017 01:20:08 +0000 (02:20 +0100)]
vulkan: Move push constants into their own header
This is the first step towards easing maintenance of the Vulkan shaders
by moving common code into headers.
Mohammed Sadiq [Tue, 17 Jan 2017 02:36:46 +0000 (08:06 +0530)]
wayland: avoid an unnecessary g_list_length call
https://bugzilla.gnome.org/show_bug.cgi?id=777363
Matthias Clasen [Mon, 16 Jan 2017 20:44:52 +0000 (15:44 -0500)]
3.89.3
Matthias Clasen [Mon, 16 Jan 2017 22:49:35 +0000 (17:49 -0500)]
We no longer have gdktestutils
Update the docs build to reflect that.
Daniel Mustieles [Mon, 16 Jan 2017 20:33:24 +0000 (21:33 +0100)]
Updated Spanish translation
Daniel Mustieles [Mon, 16 Jan 2017 20:33:13 +0000 (21:33 +0100)]
Updated Spanish translation
Timm Bäder [Mon, 16 Jan 2017 20:01:59 +0000 (21:01 +0100)]
switch: Fix build
Partial revert of
2b6b5c1c8fecdd66172516812ed3f1825619dafc, which
removed a little too much.
Timm Bäder [Mon, 16 Jan 2017 17:15:22 +0000 (18:15 +0100)]
switch: Remove some unused code
Timm Bäder [Fri, 13 Jan 2017 20:17:08 +0000 (21:17 +0100)]
gtkentryprivate: Remove unused prototype
Timm Bäder [Fri, 13 Jan 2017 20:09:14 +0000 (21:09 +0100)]
scalebutton: Use GtkButon:icon-name in the ui file
Timm Bäder [Fri, 13 Jan 2017 14:24:44 +0000 (15:24 +0100)]
spinbutton: Restore gtk3 focus behavior
Focus the spinbutton on button press, never focus the buttons.
Timm Bäder [Fri, 13 Jan 2017 20:08:59 +0000 (21:08 +0100)]
inspector: Use GtkButton:icon-name in ui files
Timm Bäder [Fri, 13 Jan 2017 20:13:07 +0000 (21:13 +0100)]
entry: Remove unused struct member
Timm Bäder [Sat, 14 Jan 2017 07:20:43 +0000 (08:20 +0100)]
gtk4-section: Add GtkInfoBar:revealed setter+getter
Olivier Fourdan [Thu, 12 Jan 2017 17:08:32 +0000 (18:08 +0100)]
wayland: avoid 0 width/height anchor rectangle
Passing a rectangle with zero width or height to xdg_shell-v6
set_anchor_rect() will cause a protocol error and terminate the client,
as with gedit when pressing the Win key.
Reason for this is because the rectangle used to set the anchor comes
from gtk_text_layout_get_iter_location() which uses the pango layout
width/height, which can be empty if there is not character at the given
location.
Make sure we don't use 0 as width or height as an anchor rectangle to
avoid the protocol error, and compensate the logical position of the
given rectangle if the size is changed, so that the actual position
remains as expected by the client.
https://bugzilla.gnome.org/show_bug.cgi?id=777176
Chun-wei Fan [Mon, 16 Jan 2017 05:47:21 +0000 (13:47 +0800)]
Visual Studio builds: Update gsk project
Another Vulkan renderer source was added, so include them in the builds.
Daniel Boles [Sun, 15 Jan 2017 20:37:49 +0000 (20:37 +0000)]
grid: Fix plural error in docs' @Short_description
Jordi Mas [Sun, 15 Jan 2017 19:18:08 +0000 (20:18 +0100)]
Update Catalan translation
Benjamin Otte [Fri, 13 Jan 2017 13:36:56 +0000 (14:36 +0100)]
snapshot: Rename gtk_snapshot_translate_2d()
It's now called gtk_snapshot_offset().
Jordi Mas [Fri, 13 Jan 2017 05:51:42 +0000 (06:51 +0100)]
Update Catalan translation
Benjamin Otte [Fri, 13 Jan 2017 03:46:09 +0000 (04:46 +0100)]
snapshot: Rename append APIs
Instead of having gtk_snapshot_append_foo_node(), just have
gtk_snapshot_append_foo(). Nobody needs to know that this internally
uses nodes.
Benjamin Otte [Fri, 13 Jan 2017 00:43:07 +0000 (01:43 +0100)]
cssimage: Fallback images have no aspect ratio
The aspect ratio for fallback image was incorrectly set to 1.
Reftest is included.
Benjamin Otte [Fri, 13 Jan 2017 02:28:34 +0000 (03:28 +0100)]
cssimage: Scale images to contain, not cover
Images with just an aspect ratio, but without a size, should be scaled
to be fully visible in the given area.
But we scaled them to completely cover the given area, which made them
partially invisible.
Reftest included.
Benjamin Otte [Thu, 12 Jan 2017 23:39:59 +0000 (00:39 +0100)]
snapshot: Redo pop() API
gtk_snapshot_pop() => removed
gtk_snapshot_pop_and_append() => gtk_snapshot_pop()
So now there is no way to get a rendernode out of the snapshotting API
until you gtk_snapshot_finish().
Benjamin Otte [Thu, 12 Jan 2017 22:20:31 +0000 (23:20 +0100)]
snapshot: Add gtk_snapshot_push_blend()
and use it for backgrounds.
Benjamin Otte [Thu, 12 Jan 2017 22:20:11 +0000 (23:20 +0100)]
reftests: Fix test
No, GtkActions don't need to be part of this test.
Benjamin Otte [Thu, 12 Jan 2017 21:49:53 +0000 (22:49 +0100)]
stack: Build stored render node with custom Snapshot object
This is in preparation for API changes in GtkSnapshot.
Benjamin Otte [Thu, 12 Jan 2017 21:00:38 +0000 (22:00 +0100)]
Add gtk_snapshot_push_cross_fade()
... and use it.
The function is a bit awkward because it requires 2 calls to
gtk_snapshot_pop(), but once you accept that, it's very convenient to
use, as can be seen by the 2 implementations.
William Hua [Thu, 12 Jan 2017 22:16:27 +0000 (17:16 -0500)]
mir: use modal window hint